/*
 * PangoExample.h
 *
 *  Created on: 30/11/2009
 *      Author: luis
 */

#ifndef PANGOWINDOW_H_
#define PANGOWINDOW_H_

#include "../Modelo/Circuito.h"
#include <gtkmm.h>

class PangoWindow : public Gtk::DrawingArea {
private:
	std::string salida;
	Circuito* circuito_actual;
	int division;

public:

	/*
	 * circuito es el circuito del cual se obtiene la tabla, se utiliza para escribir correctamente
	 * las combinaciones, y salida es el string de salida que se obtiene luego del simular
	 * para poder completar la tabla
	 */
	PangoWindow(Circuito* circuito, std::string salida );

	/*
	 * Funcion que pinta en el Cairo::Context la tabla completa
	 */
    void pintar_en_ventana(Cairo::RefPtr<Cairo::Context> cr);

    ~PangoWindow();
protected:

    //Fuente que se usara para escribir
    Pango::FontDescription *timesnr_12;

    bool onExposeEvent(GdkEventExpose *ev);

    /*
     * Pinto el nombre del entradas en el contexto
     */
    void pintar_nombre_entradas(Cairo::RefPtr<Cairo::Context> cr);



    void pintar_nombre_salidas(Cairo::RefPtr<Cairo::Context> cr);



    /*
     * Pinto las combinaciones posibles de entradas
     */
    void pintar_combinacion_entradas(Cairo::RefPtr<Cairo::Context> cr);


    /*
     * Pinto las combinaciones de salidas segun el string pasado en el constructor
     */
    void pintar_combinacion_salidas(Cairo::RefPtr<Cairo::Context> cr);

    /*
     * Pinto las lineas de la tabla
     */
    void pintar_lineas(Cairo::RefPtr<Cairo::Context> cr);

    /*
     * Funcion auxiliar para calculas las combinaciones de entradas segun el numero de entradas
     * que tenga el circuito
     */
    std::string sumar_binario(int iteracion, unsigned int cantidad);
};
#endif /* PANGOWINDOW_H_ */
